package config

import (
	"bufio"
	"encoding/json"
	"os"
)

type Config struct {
	App appConfig `json:"app"`
	Mysql mysqlConfig `json:"mysql"`
	Logger loggerConfig `json:"logger"`
}

type appConfig struct {
	Name string `json:"name"`
	Env string `json:"env"`
	Port int `json:"port"`
	LogLevel string `json:"log_level"`
}

type loggerConfig struct {
	Path string `json:"path"`
	Filename string `json:"filename"`
	MixAge int `json:"mixAge"`
	RotationTime int `json:"rotationTime"`
}

type mysqlConfig struct {
	Database string `json:"database"`
	User string `json:"user"`
	Password string `json:"password"`
	Host string `json:"host"`
	Port int `json:"port"`
	Url string `json:"-"`
}


//存储配置的全局对象
var cfg *Config = nil

func init () {
	ParseConfig("./config/config.json")
}


//获取配置，外部使用"config.GetConfig()"调用
func GetConfig() *Config {
	return cfg
}
 
func ParseConfig(path string) (*Config, error) {
	file, err := os.Open(path) //读取文件
	defer file.Close()
	if err != nil {
		return nil, err
	}
	reader := bufio.NewReader(file)
	decoder := json.NewDecoder(reader) //解析json
	if err = decoder.Decode(&cfg); err != nil {
		return nil, err
	}
	return cfg, nil
}
